package pattern_matcher正则;

import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Pattern 类：
 * pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。
 * 要创建一个 Pattern 对象，你必须首先调用其公共静态编译方法，它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
 *
 * Matcher 类：
 * Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样，
 * Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
 */
public class Test {
    public static void main(String[] args) {
        final String regex="%[^%]+%"; // %%之间，中间非空且不包含%
        final String input="%%abc%bb%%%s%";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(input);
        StringBuffer sb=new StringBuffer();
        Map<String,String> map=new HashMap<>();
        map.put("abc","111");
        map.put("bb","22");
        map.put("s","3");

        while (matcher.find()){
            int start = matcher.start();
            int end = matcher.end();
            System.out.println(start+":"+end);
            matcher.appendReplacement(sb,map.get(input.substring(start+1,end-1)));
        }
        matcher.appendTail(sb);
        System.out.println(sb); // %111bb%%3
    }
}
